home *** CD-ROM | disk | FTP | other *** search
/ Merciful 2 / Merciful - Disc 2.iso / software / z / zeus2.dms / zeus2.adf / Developers / Include / libraries / pipeutil.h < prev    next >
C/C++ Source or Header  |  1995-07-04  |  8KB  |  332 lines

  1. #ifndef LIBRARIES_PIPEUTIL_H
  2. #define LIBRARIES_PIPEUTIL_H
  3.  
  4. // #ifndef PLFILE_H
  5. // #include <plfile.h>
  6. // #endif
  7.  
  8. #ifndef PLMSG_H
  9. #include <plmsg.h>
  10. #endif
  11.  
  12. /**********************************************************************/
  13. /*                              BAUDLIST                              */
  14. /**********************************************************************/
  15.  
  16. #define BE_DOWNLOADS              0x0001
  17. #define BE_UPLOADS              0x0002
  18. #define BE_LOGONS             0x0004
  19.  
  20. struct BaudEntry
  21. {
  22.     ULONG                 bn_BPS;
  23.     ULONG                 bn_CPS;
  24.     ULONG                 bn_Flags;
  25. } ;
  26.  
  27. struct BaudNode
  28. {
  29.     struct Node              bn_Node;
  30.     struct BaudEntry         bn_Entry;
  31. } ;
  32.  
  33.  
  34. /**********************************************************************/
  35. /*                             EDITORLIST                             */
  36. /**********************************************************************/
  37.  
  38. #define    REMOTEONLY        0
  39. #define    LOCALONLY        1
  40. #define    REMOTE&LOCAL        2
  41.  
  42. #define EDITORSFILE        "Pipeline:Config/PlMsg/Editors.Dat"
  43.  
  44. struct  Editor
  45. {
  46.     char              name [EDITORNAME_LENGTH];
  47.     int              lo_access;
  48.     int              high_access;
  49.     int              type;
  50.     int              seglength;
  51. };
  52.  
  53. struct    EditorNode
  54. {
  55.     struct     Node          en_Node;
  56.     struct     Editor        *editor;
  57.     UBYTE            *seg;
  58.     struct    List          ScriptSegs; /* struct EdSegNode */
  59. };
  60.  
  61. struct    EdSegData
  62. {
  63.     char             esd_Name[80];
  64.     UBYTE            *esd_Pointer;
  65. } ;
  66.  
  67. struct    EdSegNode
  68. {
  69.     struct    Node          esn_Node;
  70.     struct    EdSegData     esn_Data;
  71. } ;
  72.  
  73. /**********************************************************************/
  74. /*                             EDITORLINE                             */
  75. /*                      For Message Editor's Use                      */
  76. /**********************************************************************/
  77.  
  78. #define MESSAGE_TEXT       1
  79. #define FILE_DESCRIPTION   2
  80.  
  81. struct  EditorLine
  82. {
  83.         struct  Line            *le;
  84.         ULONG                    Flags;
  85.         /* Message Editing Stuff */
  86.         char                     From[36];
  87.         char                     To[36];
  88.         char                     Subject[36];
  89.         BOOL                     Reply;
  90.         struct  FiveDFido        FromAddress;
  91.         struct  FiveDFido        DestAddress;
  92.         ULONG                    MessageArea;
  93.         ULONG                    MsgFlags;
  94.         struct  WholeMessage    *ReplyMsg;
  95.         /* File Description */
  96.         char                     FileName[20];
  97.         ULONG                    AreaNumber;             
  98.         char                    *FileDescription;
  99. } ;
  100.  
  101. /**********************************************************************/
  102. /*                             ARCHIVERS                              */
  103. /**********************************************************************/
  104.  
  105. #define    ARCHIVERSFILE        "Pipeline:Config/Pipeline/Archivers.Dat"
  106.  
  107. struct    Archiver
  108. {
  109.     char             Name[80];
  110.     char             Compress[256];
  111.     char             Extract[256];
  112.     char             Recog[256];
  113. } ;
  114.  
  115. struct    ArchiverNode
  116. {
  117.     struct    Node         an_Node;
  118.     struct    Archiver     an_Arc;
  119. } ;
  120.  
  121. /**********************************************************************/
  122. /*                              SCANINFO                              */
  123. /*           for use with InitFileScanKey & InitMsgScanKey            */
  124. /**********************************************************************/
  125.  
  126. #define  SA_NATURAL    1
  127. #define  SA_ALPHA    2
  128. #define  SA_CHRONO    3
  129.  
  130. #define     SA_FORWARDS    1
  131. #define  SA_BACKWARDS   2
  132.  
  133. struct     ScanInfo
  134. {
  135.     /* INITFILESCANKEY() data */
  136.     int    ScanFlag;    /* NATURAL/ALPHA/CHRONO */
  137.  
  138.     /* INITMSGSCANKEY() data  */
  139.     ULONG    StartNumber;     /* Message Number to start at, or 0 to start */
  140.                 /* at beginning of file.                     */
  141.  
  142.     /* GLOBAL data            */
  143.     int    Direction;    /* FORWARDS/BACKWARDS */
  144.     int    Buffer;        /* 32 is a nice one... */
  145.     ULONG    Area;        /* File/Msg Area to Start At */
  146. } ;
  147.  
  148. /**********************************************************************/
  149. /*                             PROGRAMLOG                             */
  150. /**********************************************************************/
  151.  
  152. #define PLFILE_LOG    1
  153. #define PLMSG_LOG    2
  154.  
  155. /**********************************************************************/
  156. /*                            SIG RELATED                             */
  157. /**********************************************************************/
  158.  
  159. struct    SigNode
  160. {
  161.     struct    Node    sn_Node;
  162.     char        sn_Tag[9]; /* 8 chars max! */
  163.     char        sn_Desc[40];
  164.     /* Access Levels */
  165.     UWORD        sn_Low;
  166.     UWORD        sn_High;
  167.     struct    List    sn_MsgAreas;
  168.     struct    List    sn_FileAreas;
  169. } ;
  170.  
  171. /* Format for Pipeline:Config/Pipeline/Sigs.cfg */
  172.  
  173. /* Format : [Header SigSavedData]->LONG FileArea... LONG FileArea... etc...
  174.     LONG -1... LONG MsgArea... LONG MsgArea... etc... LONG -1...
  175.     [Header SigSavedData] etc.. etc.. EOF
  176. */
  177.  
  178. struct    SigSavedData
  179. {
  180.     char        ssd_Tag[9]; /* including null */
  181.     char        ssd_Desc[40];
  182.     UWORD        ssd_Low;
  183.     UWORD        ssd_High;
  184. } ;
  185.  
  186. #define SIGCONFIG "Pipeline:Config/Pipeline/Sigs.Cfg"
  187.  
  188.  
  189. struct    AreaPickNode
  190. {
  191.     struct    Node    node;
  192.     ULONG        number;
  193. } ;
  194.  
  195. /**********************************************************************/
  196. /*                      Address Parsing Routines                      */
  197. /**********************************************************************/
  198.  
  199. struct    ReadAdrNode
  200. {
  201.     struct    Node         ran_Node;
  202.     struct    FidoAddress    *ran_Address;
  203. } ;
  204.     
  205. #define FIDO_STANDARD_N        1
  206. #define FIDO_STANDARD_R     2
  207. #define FIDO_STANDARD_RN     3
  208.  
  209. /**********************************************************************/
  210. /*                  Find(File|Message)FromDate Flags                  */
  211. /**********************************************************************/
  212.  
  213. #define FMFD_EQUAL     0x0001
  214. #define FMFD_LESS_THAN 0x0002
  215. #define FMFD_MORE_THAN 0x0004
  216. #define FMFD_MONTH     0x0008
  217. #define FMFD_HOUR      0x0010
  218. #define FMFD_MIN       0x0020
  219. #define FMFD_SECONDS   0x0040
  220. #define FMFD_DAY       0x0080
  221.  
  222. /**********************************************************************/
  223. /*                         LoadMessage Flags                          */
  224. /**********************************************************************/
  225.  
  226. #define LM_NOFIDOINFO  0x0001
  227. #define LM_NEXTMSG     0x0002
  228. #define LM_NOTEXT      0x0004
  229.  
  230. /**********************************************************************/
  231. /*                        Template Definitions                        */
  232. /**********************************************************************/
  233.  
  234. #define TEMPLATECONFIG "Pipeline:Config/Pipeline/Templates.Cfg"
  235.  
  236. struct    TemplateData
  237. {
  238.     LONG    CallsDay;
  239.     LONG    MinsCall;
  240.     LONG    MinsDay;
  241.     LONG    FileRatio;
  242.     LONG    ByteRatio;
  243.     LONG    MaxBytes;
  244.     LONG    MaxFiles;
  245.     LONG    FreeFiles;
  246.     LONG    FreeBytes;
  247.     LONG    MaxMsgs;
  248. } ;
  249.  
  250. struct    Template
  251. {
  252.     LONG            te_AccessLvl;
  253.     UBYTE            te_Description[40];
  254.     struct    List        te_MessageAreas;
  255.     struct    List        te_FileAreas;
  256.     struct    TemplateData    te_Data;
  257. } ;
  258.  
  259. struct    TemplateNode
  260. {
  261.     struct    Node        tn_Node;
  262.     struct    Template    tn_Template;
  263. } ;
  264.  
  265. struct    TemplateAreaNode
  266. {
  267.     struct    Node        tan_Node;
  268.     ULONG            tan_Low;
  269.     ULONG            tan_High;
  270.     ULONG            tan_Flags;
  271.     BOOL            tan_FileOrMsg; /* 0 = File, 1 = Msg */
  272. } ;
  273.  
  274. struct    SaveTemplate
  275. {
  276.     LONG            st_AccessLvl;
  277.     UBYTE            st_Description[40];
  278.     struct    TemplateData    st_Data;
  279.     ULONG            st_FileAreas; /* Files saved First */
  280.     ULONG            st_MsgAreas;  /* and then Messages */
  281. } ;
  282.  
  283. struct  SaveAreaTemplate
  284. {
  285.     ULONG            sat_Low;
  286.     ULONG            sat_High;
  287.     ULONG            sat_Flags;
  288. } ;
  289.  
  290. /**********************************************************************/
  291. /*                           Config Update                            */
  292. /**********************************************************************/
  293.  
  294. struct    ConfigUpdate
  295. {
  296.     /* Message Areas */
  297.     void            (*FreeMsgAreaNodes)( struct List * );
  298.     void            (*CloseLibraries)( void );
  299.     int            (*MsgAreasLoad)( struct List * );
  300.     int            (*OpenLibraries)( void );
  301.  
  302.     /* File Areas */
  303.     void            (*ScanFileAreas)( void );
  304.     void            (*FreeAreas)( void );
  305.  
  306.     /* General Configuration */
  307.     int            (*LoadGeneralCfg)( struct GeneralCfg * );
  308.  
  309.     /* Editors */
  310.     void            (*FreeEditorNodes)( struct List * );
  311.  
  312.     /* Baud Rates */
  313.     void            (*FreeBaudList)( void );
  314.  
  315.     /* Xpr Protocols */
  316.     void            (*FreeXprNodes)( struct List * );
  317.  
  318.     /* Archivers */
  319.     int            (*ArchiverLoad)( void );
  320.     void            (*FreeArchivers)( void );
  321.  
  322.     /* Sigs */
  323.     void            (*FreeSigs)( struct List * );
  324. } ;
  325.  
  326. struct    AreaAccess
  327. {
  328.     UWORD            aa_Num;
  329.     UWORD            aa_Flags;
  330. } ;
  331.  
  332. #endif /* LIBRARIES_PIPEUTIL_H */